Implement gdk_display_get_cursor_for_surface in quartz
authorJohn Ralls <jralls@ceridwen.us>
Sun, 11 Aug 2013 17:43:35 +0000 (10:43 -0700)
committerJohn Ralls <jralls@ceridwen.us>
Sun, 11 Aug 2013 17:43:48 +0000 (10:43 -0700)
Left out of b2113b7, breaking quartz build

gdk/quartz/gdkcursor-quartz.c
gdk/quartz/gdkdisplay-quartz.c
gdk/quartz/gdkprivate-quartz.h

index 1b1ed3e95210d1c432a6e043f6a3201b25c05618..dfcb860e408a0904ff858fcf3508dd0d31c2f97a 100644 (file)
@@ -250,25 +250,28 @@ _gdk_quartz_display_get_cursor_for_type (GdkDisplay    *display,
 
 
 GdkCursor *
-_gdk_quartz_display_get_cursor_for_pixbuf (GdkDisplay *display,
-                                           GdkPixbuf  *pixbuf,
-                                           gint        x,
-                                           gint        y)
+_gdk_quartz_display_get_cursor_for_surface (GdkDisplay      *display,
+                                           cairo_surface_t *surface,
+                                           gdouble          x,
+                                           gdouble          y)
 {
   NSImage *image;
   NSCursor *nscursor;
   GdkCursor *cursor;
-  gboolean has_alpha;
+  GdkPixbuf *pixbuf;
 
   GDK_QUARTZ_ALLOC_POOL;
 
-  has_alpha = gdk_pixbuf_get_has_alpha (pixbuf);
-
+  pixbuf = gdk_pixbuf_get_from_surface (surface, 0, 0,
+                                       cairo_image_surface_get_width (surface),
+                                       cairo_image_surface_get_height (surface));
   image = gdk_quartz_pixbuf_to_ns_image_libgtk_only (pixbuf);
   nscursor = [[NSCursor alloc] initWithImage:image hotSpot:NSMakePoint(x, y)];
 
   cursor = gdk_quartz_cursor_new_from_nscursor (nscursor, GDK_CURSOR_IS_PIXMAP);
 
+  g_object_unref (pixbuf);
+
   GDK_QUARTZ_RELEASE_POOL;
 
   return cursor;
index b78bac9bdd36bf2e953831d5c48a423cd0c67122..6b4afc87434fbaa554989250ca5add52f4a6d9d7 100644 (file)
@@ -316,7 +316,7 @@ gdk_quartz_display_class_init (GdkQuartzDisplayClass *class)
   display_class->list_devices = gdk_quartz_display_list_devices;
   display_class->get_cursor_for_type = _gdk_quartz_display_get_cursor_for_type;
   display_class->get_cursor_for_name = _gdk_quartz_display_get_cursor_for_name;
-  display_class->get_cursor_for_pixbuf = _gdk_quartz_display_get_cursor_for_pixbuf;
+  display_class->get_cursor_for_surface = _gdk_quartz_display_get_cursor_for_surface;
   display_class->get_default_cursor_size = _gdk_quartz_display_get_default_cursor_size;
   display_class->get_maximal_cursor_size = _gdk_quartz_display_get_maximal_cursor_size;
   display_class->supports_cursor_alpha = _gdk_quartz_display_supports_cursor_alpha;
index ff857c1b158b868bafacdccc72dc05b5774c2cfb..2f9059b2c34328c05ec0f7ddad0b8a5179a0ddd8 100644 (file)
@@ -96,14 +96,14 @@ void       _gdk_quartz_display_event_data_free (GdkDisplay     *display,
                                                 GdkEvent       *event);
 
 /* Display methods - cursor */
-GdkCursor *_gdk_quartz_display_get_cursor_for_type     (GdkDisplay    *display,
-                                                        GdkCursorType  type);
-GdkCursor *_gdk_quartz_display_get_cursor_for_name     (GdkDisplay    *display,
-                                                        const gchar   *name);
-GdkCursor *_gdk_quartz_display_get_cursor_for_pixbuf   (GdkDisplay    *display,
-                                                        GdkPixbuf     *pixbuf,
-                                                        gint           x,
-                                                        gint           y);
+GdkCursor *_gdk_quartz_display_get_cursor_for_type     (GdkDisplay      *display,
+                                                        GdkCursorType    type);
+GdkCursor *_gdk_quartz_display_get_cursor_for_name     (GdkDisplay      *display,
+                                                        const gchar     *name);
+GdkCursor *_gdk_quartz_display_get_cursor_for_surface  (GdkDisplay      *display,
+                                                        cairo_surface_t *surface,
+                                                        gdouble          x,
+                                                        gdouble          y);
 gboolean   _gdk_quartz_display_supports_cursor_alpha   (GdkDisplay    *display);
 gboolean   _gdk_quartz_display_supports_cursor_color   (GdkDisplay    *display);
 void       _gdk_quartz_display_get_default_cursor_size (GdkDisplay *display,